package com.motu.monstercity.module.common.servermanager;

import com.motu.vertx.module.utility.commondata.WordManager;
import com.motu.vertx.module.utility.toolset.TimeUtils;
import io.vertx.core.json.JsonArray;
import io.vertx.core.json.JsonObject;

public class ServerInfo extends ServerInfoModel {

    //	0--火爆  1--关闭注册  2--新服  3--暂未开启 4--维护中 5--隐藏状态
    public static final byte SERVER_STATUS_HOT = 0;
    public static final byte SERVER_STATUS_CLOSE_REGEDIT = 1;//关闭注册
    public static final byte SERVER_STATUS_NEW = 2;//新服
    public static final byte SERVER_STATUS_ENABLE = 3;//暂未开启
    public static final byte SERVER_STATUS_MAINTAIN = 4;//维护中
    public static final byte SERVER_STATUS_HIDE = 5;//隐藏服

    private JsonArray desList = new JsonArray();

    public ServerInfo(JsonObject obj) {

        super(obj);
        desList = new JsonArray(super.getDes());
    }

    /**
     * 获取服务器ID，大部分情况使用此方法（如果被合服，返回合服后的ID）
     * <p>原始服务器ID在{@link ServerInfo#getServerId1}
     */
    @Override
    public int getServerId() {
        if (super.getServerId2() > 0) {
            return super.getServerId2();
        }
        return super.getServerId();
    }

    /**
     * 合服前原始服务器ID，部分功能使用，大部分场景使用{@link ServerInfo#getServerId}
     */
    public int getServerId1() {
        return super.getServerId();
    }

    public byte getStatus() {
        return getServerStatus();
    }

    //	public String getServerName() {
//		return servername;
//	}
    public boolean isWorldChat() {
        return getIsWorldChat() == 1;
    }

    /***
     * 是否被合服了
     * @return
     */
    public boolean isMerged() {
        return super.getIsMerged() == 1;
    }

    //	public JDBCClient getJDBCClient(){
//		return client;
//	}
    public String getDes(int language) {
        for (int i = 0; i < desList.size(); i++) {
            JsonObject obj = desList.getJsonObject(i);
            if (obj.getInteger("type") == language) {
                return obj.getString("word");
            }
        }
        return "error language " + language;
    }


    /*
    根据语言获取服务名称
     */
    public String getServerNameByLanguage(int language) {
        return WordManager.getWordByLanguage(getServerName(), language);
    }

    // 服务器是否显示
    public boolean isShow() {
        if (isMerged()) {
            return false;// 合服不显示
        }
        if (getServerStatus() == ServerInfo.SERVER_STATUS_HIDE) {
            return false;// 隐藏服不显示
        }
        return TimeUtils.getCurTime() >= getStartTime();// 还未开服不显示
    }

    // 获取该服所在的战区分组id
    public int getWarZone() {
        return ServerManager.getWarZoneId(getServerId());
    }
}
